#ifndef _AE_PROTOLS_H_
#define _AE_PROTOLS_H_
#include "AeDefs.h"


#pragma pack(1)

typedef enum _AeMove
{
	AE_MOVE_STAY = 0,
	AE_MOVE_FORWARD,
	AE_MOVE_LEFT,
	AE_MOVE_RIGHT,
	AE_MOVE_BACK
} AeMove_t;

typedef enum _AeProtoCmd
{
	AE_PCMD_UNKNOWN = 0,

	// Version
	AE_PCMD_GET_VERSION,

	// Storage
	AE_PCMD_GET_STORAGE,

	// Action
	// get ---->
	// <---- sending
	// <---- sending
	// ...
	// <---- finished
	AE_PCMD_GET_ACTIONS,
	AE_PCMD_GETACT_SENDING,
	AE_PCMD_GETACT_FINISHED,

	// play ---->
	// <---- sending
	// <---- sending
	// ...
	// <---- finished
	AE_PCMD_PLAY_ACTION,
	AE_PCMD_PLAYACT_SENDING,
	AE_PCMD_PLAYACT_FINISHED,

	AE_PCMD_STOP_ACTION,
	AE_PCMD_CTRL_ACTION,
	AE_PCMD_DELETE_ACTION,

	// upload ---->
	// sending ---->
	// sending ---->
	// ...
	// finished ---->
	AE_PCMD_UPLOAD_ACTION,
	AE_PCMD_UPLOADACT_SENDING,
	AE_PCMD_UPLOADACT_FINISHED,

	// Voice
	AE_PCMD_OFFON_VOICE,
	AE_PCMD_SET_VOLUME,
	AE_PCMD_PLAY_MUSIC,
	AE_PCMD_STOP_MUSIC,
	AE_PCMD_CTRL_MUSIC,

	// Servo
	AE_PCMD_SET_SERVO_LED,
	AE_PCMD_SET_SERVOS_LED,

	AE_PCMD_SET_SERVO_ANGLE,
	AE_PCMD_SET_SERVOS_ANGLE,
	AE_PCMD_GET_SERVO_ANGLE,
	AE_PCMD_GET_SERVOS_ANGLE,

	AE_PCMD_SET_SERVO_OFFSET,
	AE_PCMD_SET_SERVOS_OFFSET,
	AE_PCMD_GET_SERVO_OFFSET,
	AE_PCMD_GET_SERVOS_OFFSET,

	AE_PCMD_LOCK_SERVOS,
	AE_PCMD_UNLOCK_SERVOS,

	AE_PCMD_GET_SERVO_FIRMWARE,
	AE_PCMD_GET_SERVOS_FIRMWARE,

	// Teaching
	// start ---->
	// <---- sending
	// <---- sending
	// ...
	// stop ---->
	AE_PCMD_START_TEACHING,
	AE_PCMD_STOP_TEACHING,
	AE_PCMD_TEACH_SENDING,

	// Moving
	AE_PCMD_MOVING,

} AeProtoCmd_t;

#pragma pack()

#endif

